<template>
  <div>
    <h1>当前求和值为：{{ sum }}</h1>
    <h3>当前放大10倍为：{{ bigSum }}</h3>
    <h3>我在{{ school }}学习{{ subject }}</h3>
    <select v-model="n">
      <option :value="1">1</option>
      <option :value="2">2</option>
      <option :value="3">3</option>
    </select>
    <button @click="increment(n)">+</button>
    <button @click="decrement(n)">-</button>
    <button @click="incrementOdd(n)">求和为奇数再加</button>
    <button @click="incrementWait(n)">延时相加</button>
  </div>
</template>

<script>
import {mapActions, mapGetters, mapMutations, mapState} from 'vuex'

export default {
  name: "Count",
  data() {
    return {
      n: 1
    }
  },
  computed: {
    // 借助mapState生成计算属性从state读取数据相当于直接返回$store.state.sum（对象写法）
    // ...mapState({
    //   sum: 'sum',
    //   school: 'school',
    //   subject: 'subject'
    // }),
    // 名字一样的时候可以重写（数组写法）
    ...mapState(['sum', 'school', 'subject']),
    // ...mapGetters({
    //   bigSum: 'bigSum'
    // }),
    ...mapGetters(['bigSum']),
  },
  methods: {
    // increment() {
    //   // 如果没有什么逻辑，就直接commit到mutations
    //   this.$store.commit('ADD', this.n);
    // },
    // decrement() {
    //   this.$store.commit('SUBTRACTION', this.n);
    // },
    // 对象写法
    ...mapMutations({increment: 'ADD', decrement: 'SUBTRACTION'}),
    // 数组写法
    // ...mapMutations(['increment', 'decrement']),
    // incrementOdd() {
    //   this.$store.dispatch('addOdd', this.n);
    // },
    // incrementWait() {
    //   this.$store.dispatch('addWait', this.n);
    // },
    // 对象写法
    ...mapActions({incrementOdd: 'addOdd', incrementWait: 'addWait'}),
    // 数组写法
    // ...mapActions(['incrementOdd','incrementWait']),
  },
  mounted() {

  }
}
</script>

<style scoped>
div, button {
  margin-left: 10px;
}
</style>